MySQL - 主備停機步驟與註意事項

主備停機步驟與註意事項

Posted by MySQL on 2019-10-07 18:00:00

今天登錄mysql數據庫服務器的時候突然發現服務器時間戳不對,比北京時間快了幾分鐘,我的天。。。隨後檢查了其他的幾台數據庫服務器發現同樣都存在不同的偏差,最小的比北京時間快幾秒,最大的長達8分鐘,感覺整個人都不舒服了。。。服務器時間戳沒有同步會導致什麼問題呢,舉個最簡單的例子你的程序代碼裡面用now()來獲取時間,比如一個訂單,你最終會發現訂單的處理時間竟然比訂單的創建時間來到早!!!

  隨後要做的事情就是改服務器時間了,改服務器時間本身是個很簡單的事情,可是要考慮到應用數據在隨時寫入,兩台主從服務器還在實時同步,所以大概列了一個詳細的計劃和步驟,大體思路是:停應用停數據庫(先備後主)改時間啟數據庫(先主後備)啟應用

備忘下:

  1 通知系統上下游,以及相關業務,系統某個時間點(一般在凌晨)停止服務

  2 關閉服務器入口,比如nginx/F5等,避免新的訂單進入

  3 關閉定時任務,避免任務繼續在跑

  4 關閉應用

  5關閉MHA(MySQL高可用方案)

  6 關閉MySQL從庫

    a.先查看當前的主從同步狀態show slave status\G;看是否雙yes

    b.執行stop slave

    c.停止從庫服務mysqladmin shutdown -u用戶名-p密碼

    d.查看是否還有mysql的進程ps -ef | grep mysql

    d.如果部署了多個實例,那每個實例都要按照以上步驟來操作

  7 關閉MySQL主庫

    a.停止主庫服務mysqladmin shutdown -u用戶名-p密碼

    b. 查看是否還有mysql的進程ps -ef | grep mysql

  8 修改數據庫服務器時間

  9 啟動MySQL主庫

    a.啟動主庫服務mysqladmin start -u用戶名-p密碼

    b. 查看mysql的進程ps -ef | grep mysql

  10 啟動MySQL從庫

    a.啟動從庫服務mysqladmin start -u用戶名-p密碼

    b.啟動複製start slave;

    c.檢查同步狀態show slave status\G;是否雙yes

    d. 查看mysql的進程ps -ef | grep mysql

  11 啟動MHA

  12 啟動應用

  13 啟動定時器

  14 啟動外部入口

  15 完畢!